/*
 * 上海远境文化传媒有限公司 版权所有
 */
package controllers.baseAPI;

import models.base.RequestUtility;
import play.mvc.Http;

/**
 * 应用级别的上下文，使用ThreadLocal模式实现统一的场景数据设置与获取.
 */
public final class AppContext {


    private final static ThreadLocal<Boolean> _currentPatchMode = new ThreadLocal<>();


    /**
     * 当前是否是PatchMode
     * 只在request.method==PATCH时返回true.
     */
    public static boolean patchMode() {
        if (_currentPatchMode.get() == null) {
            if (Http.Request.current() != null) {
                // 先检查Header
                String methodName = RequestUtility.getHeaderIgnoreCase("X-Request-Method");
                if ("PATCH".equals(methodName)) {
                    _currentPatchMode.set(Boolean.TRUE);
                } else {
                    _currentPatchMode.set("PATCH".equals(Http.Request.current().method));
                }
            } else {
                _currentPatchMode.set(Boolean.FALSE);
            }
        }
        return _currentPatchMode.get();
    }

    /**
     * 清除上下文.
     */
    public static void cleanUp() {
//        _currentUser.remove();
//        _currentCorp.remove();
//        _currentApiPlatform.remove();
//        _currentClientType.remove();
        _currentPatchMode.remove();
    }

}
